package com.medical.satoken.service;

import cn.dev33.satoken.stp.StpInterface;
import com.medical.satoken.model.UserAuthInfo;
import com.medical.satoken.utils.LoginHelper;

import java.util.ArrayList;
import java.util.List;

/**
 * 实现鉴权接口
 * 关于数据获取，建议以下三种方案
 * 1、从网关出集成ORM框架、直接从数据库查询。
 * 2、先从redis中获取数据，获取不到时，走ORM框架查询数据库
 * 3、先从Redis中获取缓存数据，获取不到时，走RPC调用子服务（专门的权限数据提供服务）获取
 */
public class StpInterfaceImpl implements StpInterface {

    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        UserAuthInfo userAuthInfo = LoginHelper.getAuthUserInfo();
        if (userAuthInfo != null && userAuthInfo.getPerms() != null) {
            return new ArrayList<>(userAuthInfo.getPerms());
        }
        //TODO 获取不到可调用子服务获取
        return new ArrayList<>();
    }

    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        UserAuthInfo userAuthInfo = LoginHelper.getAuthUserInfo();
        if (userAuthInfo != null && userAuthInfo.getRoles() != null) {
            return new ArrayList<>(userAuthInfo.getRoles());
        }
        //TODO 获取不到可调用子服务获取
        return new ArrayList<>();
    }
}
